#ifndef __FIRST_PERSON_CAMERA_H__
#define __FIRST_PERSON_CAMERA_H__

#include "perspective_camera.h"
#include "model/matrix4x4.h"
#include <iostream>

class FirstPersonCamera : public PerspectiveCamera {
	public:
		// Up = 0,0,1 siempre (sino no funcionan los movimientos UP,LR)
		FirstPersonCamera(Point at = Point(0,0,0),Point eye = Point(3.0f, 0.0f,1.0f),Point up=Point(0,0,1),float fovUp=45,float aspect=1.0f,float dNear=1.0f,float dFar=10.0f);

		~FirstPersonCamera();

		void applyModelViewTransformations();

		void rotateUD(float theta);

		void moveTo(const Point& p);
		void move(float offset);

		// No se considera el z
		void moveAhead(float offset);

		void strafe(float offset);

		void rotateLR(float theta);

		void updatePosition(const Point& position,const Point& direction,PathInfo* info);
};

#endif
